home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume18 / elm2.2 / part07 < prev    next >
Encoding:
Internet Message Format  |  1989-04-12  |  48.9 KB

  1. Subject:  v18i086:  Elm mail system, release 2.2, Part07/24
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: dsinc!syd@uunet.UU.NET (Syd Weinstein)
  7. Posting-number: Volume 18, Issue 86
  8. Archive-name: elm2.2/part07
  9.  
  10. #!/bin/sh
  11. # this is part 7 of a multipart archive
  12. # do not concatenate these parts, unpack them in order with /bin/sh
  13. # file doc/elmrc-info continued
  14. #
  15. CurArch=7
  16. if test ! -r s2_seq_.tmp
  17. then echo "Please unpack part 1 first!"
  18.      exit 1; fi
  19. ( read Scheck
  20.   if test "$Scheck" != $CurArch
  21.   then echo "Please unpack part $Scheck next!"
  22.        exit 1;
  23.   else exit 0; fi
  24. ) < s2_seq_.tmp || exit 1
  25. echo "x - Continuing file doc/elmrc-info"
  26. sed 's/^X//' << 'SHAR_EOF' >> doc/elmrc-info
  27. X
  28. Xaskcc
  29. X# would you like to be asked for Carbon-Copies information each msg?
  30. X
  31. SHAR_EOF
  32. echo "File doc/elmrc-info is complete"
  33. chmod 0444 doc/elmrc-info || echo "restore of doc/elmrc-info fails"
  34. echo "x - extracting doc/elmrc.samp (Text)"
  35. sed 's/^X//' << 'SHAR_EOF' > doc/elmrc.samp &&
  36. X#@(#)$Id: elmrc.samp,v 2.8 89/03/31 09:38:57 syd Exp $
  37. X#
  38. X# .elm/elmrc - options file for the ELM mail system
  39. X#
  40. X# Saved automatically by ELM 2.2 for Dave Taylor
  41. X#
  42. X
  43. X# For yes/no settings with ?, ON means yes, OFF means no
  44. X
  45. X# where to save calendar entries
  46. Xcalendar = ~/.Agenda
  47. X
  48. X# what editor to use ("none" means simulate Berkeley Mail)
  49. Xeditor = none
  50. X
  51. X# the character to use in the builtin editor for entering commands
  52. Xescape = ~
  53. X
  54. X# the full user name for outbound mail
  55. Xfullname = Dave Taylor
  56. X
  57. X# where to save received messages to, default file is "=received"
  58. Xreceivedmail = $HOME/Mail/received
  59. X
  60. X# where to save my mail to, default directory is "Mail"
  61. Xmaildir = /users/taylor/Mail
  62. X
  63. X# program to use for displaying messages ('builtin' is recommended)
  64. Xpager = builtin
  65. X
  66. X# prefix sequence for indenting included message text in outgoing messages...
  67. Xprefix = >_
  68. X
  69. X# how to print a message ('%s' is the filename)
  70. Xprint = lpr -Plw2 %s
  71. X
  72. X# where to save copies of outgoing mail to, default file is "=sent"
  73. Xsentmail = /users/taylor/Mail/mail.sent
  74. X
  75. X# the shell to use for shell escapes
  76. Xshell = /bin/csh
  77. X
  78. X# local ".signature" file to append to appropriate messages...
  79. Xlocalsignature = localsig
  80. X
  81. X# remote ".signature" file to append to appropriate messages...
  82. Xremotesignature =  remotesig
  83. X
  84. X# how to sort folders, "Mailbox" by default
  85. Xsortby = Reverse-Received
  86. X
  87. X# should the default be to delete messages we've marked for deletion?
  88. Xalwaysdelete = ON
  89. X
  90. X# should the default be to store read messages to the "received" folder?
  91. Xalwaysstore = ON
  92. X
  93. X# should the default be to keep unread messages in the incoming mailbox?
  94. Xalwayskeep = ON
  95. X
  96. X# should we use the "->" rather than the inverse video bar?
  97. Xarrow = OFF
  98. X
  99. X# should the message disposition questions be displayed(ON) or
  100. X# auto-answered(OFF) with the default answers when we resync or change folders?
  101. Xask = ON
  102. X
  103. X# would you like to be asked for Carbon-Copies information each msg?
  104. Xaskcc = ON
  105. X
  106. X# automatically copy message being replied to into buffer? 
  107. Xautocopy = OFF
  108. X
  109. X# threshold for bouncing copies of remote uucp messages...
  110. X# zero = disable function.
  111. Xbounceback = 0
  112. X
  113. X# save a copy of all outbound messages?
  114. Xcopy = ON
  115. X
  116. X# do we want to be able to mail out AT&T Mail Forms?
  117. Xforms = OFF
  118. X
  119. X# should we keep folders from which all messages are deleted?
  120. Xkeepempty = OFF
  121. X
  122. X# we're running on an HP terminal and want HOME, PREV, NEXT, etc...
  123. Xkeypad = OFF
  124. X
  125. X# should we display the three-line 'mini' menu?
  126. Xmenu = ON
  127. X
  128. X# when using the page commands (+ - <NEXT> <PREV>) change the current
  129. X# message pointer...?
  130. Xmovepage = ON
  131. X
  132. X# just show the names when expanding aliases?
  133. Xnames = ON
  134. X
  135. X# when messages are copied into the outbound buffer, don't include headers?
  136. Xnoheader = ON
  137. X
  138. X# start up by pointing to the first new message received, if possible?
  139. Xpointnew = ON
  140. X
  141. X# prompt for a command after the external pager exits?
  142. Xpromptafter = ON
  143. X
  144. X# emulate the mailx message increment mode (only increment after something
  145. X# has been 'done' to a message, either saved or deleted, as opposed to 
  146. X# simply each time something is touched)?
  147. Xresolve = ON
  148. X
  149. X# save messages, incoming and outbound, by login name of sender/recipient?
  150. Xsavename = ON
  151. X
  152. X# are we running on an HP terminal and want HOME, PREV, NEXT, etc...?
  153. X# (this implies "keypad=ON" too)
  154. Xsoftkeys = OFF
  155. X
  156. X# set the main prompt timeout for resynching...
  157. Xtimeout = 60
  158. X
  159. X# display message title when displaying pages of message?
  160. Xtitles = ON
  161. X
  162. X# are we good at it?  0=beginner, 1=intermediate, 2+ = expert!
  163. Xuserlevel = 2
  164. X
  165. X# tell us about addresses to machines we can't directly get to?
  166. Xwarnings = OFF
  167. X
  168. X# enable the weedout list to be read?
  169. Xweed = ON
  170. X
  171. X# what headers I DON'T want to see, ever.
  172. Xweedout = "Path:" "Via:" "Sent:" "Date" "Status:" "Original" "Phase" 
  173. X    "Subject:" "Fruit" "Sun" "Lat" "Buzzword" "Return" "Posted" 
  174. X    "Telephone" "Postal-Address" "Origin" "X-Sent-By-Nmail-V" "Resent" 
  175. X    "X-Location" "Source" "Mood" "Neuron" "Libido" "To:" "X-Mailer:" 
  176. X    "Full-Name:" "X-HPMAIL" "Cc:" "cc:" "Mmdf" "Network-" "Really-" 
  177. X    "Sender:" "Post" "Message-" "Relay-" "Article-" "Lines:" 
  178. X    "Approved:" "Xref:" "Organization:"     "*end-of-user-headers*"
  179. X
  180. X# alternative addresses that I could receive mail from (usually a
  181. X# forwarding mailbox) and don't want to have listed...
  182. Xalternatives = hplabs!taylor  hpldat!taylor  taylor@hplabs  taylor%hpldat  
  183. X
  184. SHAR_EOF
  185. chmod 0444 doc/elmrc.samp || echo "restore of doc/elmrc.samp fails"
  186. echo "x - extracting doc/fastmail.1 (Text)"
  187. sed 's/^X//' << 'SHAR_EOF' > doc/fastmail.1 &&
  188. X.TH FASTMAIL 1L "Elm Version 2.2" "USENET Community Trust"
  189. X.ad b
  190. X.SH NAME
  191. Xfastmail - quick batch mail interface to a single address
  192. X.SH SYNOPSIS
  193. X.B fastmail
  194. X[-b bcc-list] [-c cc-list] [-d] [-f fromname] [-r replyto] 
  195. X[-s subject] filename address-list
  196. X.br
  197. X.SH DESCRIPTION
  198. X.I Fastmail
  199. Xis a low-level interface to the mail system that allows batch
  200. Xprocessing of mail.  It's intended for mailing to very large
  201. Xgroups of people in a staggered fashion. 
  202. X.PP
  203. XThe starting options are;
  204. X.TP 1.0i
  205. X.B "-b bcc-list"
  206. XThis allows a list of people to receive blind-carbon copies, or BCCs, of
  207. Xthe message.  This list should be full email addresses.
  208. X.TP
  209. X.B "-c cc-list"
  210. XThis allows a list of people to receive carbon copies, or CCs, of
  211. Xthe message.  This list should be full email addresses.
  212. X.TP
  213. X.B "-d"
  214. XDebug.  This is helpful for strange, unfriendly errors from
  215. Xthe program (etc).
  216. X.TP
  217. X.B "-f from"
  218. XThis overrides the users name in the From: line, so that if
  219. Xthe user was x@y, and their name was MrX then the default 
  220. XFrom: line would be "From: x@y (MrX)".  Using "-f Joe" when
  221. Xinvoking this, though, would change it to "From: x@y (Joe)"
  222. X.TP
  223. X.B "-r replyto"
  224. XOccasionally, you might send mail but want the replies to go
  225. Xto a different address (very common with mailing lists).  
  226. XThere is a header for this purpose called "Reply-To:" which
  227. Xcan be utilized by using this starting option.  For example,
  228. Xwe could send mail with a reply-to to list-request by
  229. Xusing "-r list-request".  The header generated would then
  230. Xbe of the form "Reply-To: list-request".
  231. X.TP
  232. X.B "-s subject"
  233. XThe subject of the message is specified by using 
  234. Xthis starting option.
  235. X.SH EXAMPLE
  236. XLet's say we're user "big" on machine "big-vax" and we have a
  237. Xshell script called 'batch-mail' that contains the following
  238. Xlines:
  239. X.nf
  240. X
  241. X   #
  242. X   # Batch Mail - batch mailing of a file to a LOT of users
  243. X   #  
  244. X   # Usage: batch-mail "from" "subject" filename
  245. X
  246. X   sender_copy = $LOGIN
  247. X   replto = "The-Mr-Big-list"
  248. X
  249. X   fastmail -b $sender_copy -r $replyto -f "$1" -s "$2" $3 person1
  250. X   sleep 10
  251. X   fastmail -r $replyto -f "$1" -s "$2" $3 person2
  252. X   sleep 10
  253. X   fastmail -r $replyto -f "$1" -s "$2" $3 person3
  254. X   sleep 10
  255. X   fastmail -r $replyto -f "$1" -s "$2" $3 person4
  256. X
  257. X   < etc >
  258. X
  259. Xwith the invocation:
  260. X
  261. X   batch-mail "Mr. Big" "Warning to all" warning.text
  262. X
  263. X.fi
  264. Xwould mail a copy of the 'warning.text' file to person1, person2, 
  265. Xperson3, etc.  "$LOGIN" will also receive a copy of the first message
  266. Xin the mail, \fIsilently\fR.  Each resultant message will include the headers:
  267. X.nf
  268. X
  269. X    From: big-vax!big (Mr. Big)
  270. X    Subject: Warning to all
  271. X    Reply-To: The-Mr-Big-list
  272. X
  273. X.fi
  274. XThis program should turn out to be considerably
  275. Xfaster than the alternative methods of accomplishing this task.
  276. X.SH FILES
  277. X/usr/lib/sendmail       sendmail transport if available
  278. X.br
  279. X/bin/rmail              transport if no sendmail
  280. X.br
  281. X/tmp/fastmail.$$        temporary file 
  282. X.SH AUTHOR
  283. XDave Taylor, Hewlett-Packard Laboratories
  284. X.SH SEE\ ALSO
  285. Xsendmail(1), rmail(1), elm(1L)
  286. X.SH BUG REPORTS TO
  287. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  288. X.SH COPYRIGHTS
  289. X.ps 18
  290. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  291. X.br
  292. X.ps 18
  293. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  294. SHAR_EOF
  295. chmod 0444 doc/fastmail.1 || echo "restore of doc/fastmail.1 fails"
  296. echo "x - extracting doc/filter.1 (Text)"
  297. sed 's/^X//' << 'SHAR_EOF' > doc/filter.1 &&
  298. X.TH FILTER 1L "Elm Version 2.2" "USENET Community Trust"
  299. X.ad b
  300. X.SH NAME
  301. Xfilter - filter incoming messages before adding to mailbox
  302. X.SH SYNOPSIS
  303. X.B filter
  304. X[-v] [-o output]
  305. X.br
  306. X.B filter
  307. X[-n]
  308. X.br
  309. X.B filter
  310. X[-r] [-o output]
  311. X.br
  312. X.B filter
  313. X[-c] [-s] [-o output]
  314. X.br
  315. X.B filter
  316. X[-c] [-S] [-o output]
  317. X.SH DESCRIPTION
  318. X.I Filter
  319. Xis a sophisticated program that allows incoming mail to be
  320. Xfiltered against a wide set of criteria.  The format for the
  321. Xrules, located in $HOME/.filter_rules, is;
  322. X.nf
  323. X        
  324. X        \fIrule\fR  ::=  \fBif  (\fIexpression\fP)  then  \fIaction\fR
  325. X
  326. X.fi
  327. Xwhere \fIexpression\fR is:
  328. X.nf
  329. X
  330. X        \fIexpression\fR  ::=  {  \fBnot\fR  }  \fIcondition\fR  \fIexpr2\fR
  331. X
  332. X        \fIexpr2\fR  ::=  \fINULL\fR  |  \fBand\fI  condition  expr2
  333. X
  334. X        \fIcondition\fR  ::=  \fIfield  relationship  value\fR
  335. X                   ::=  \fBlines\fI  relop  numvalue\fR
  336. Xor                 ::=  \fBalways\fR
  337. X
  338. X.fi
  339. XThese further break down as:
  340. X.nf
  341. X
  342. X        \fIfield\fR  ::=  \fBfrom\fR  |  \fBsubject\fR  |  \fBto\fR  |  \fBlines\fR
  343. X
  344. X        \fIrelationship\fR  ::=  \fB=\fR  |  \fB!=\fR
  345. X                
  346. X        \fIrelop\fR  ::=  \fB=\fR  |  \fB!=\fR  |  \fB<\fR  |  \fB>\fR  |  \fB<=\fR  |  \fB>=\fR
  347. X
  348. X        \fIvalue\fR  ::=  \fIany  quoted  string\fR
  349. X
  350. X        \fInumvalue\fR  ::=  \fIany  integer  value\fR
  351. X
  352. X.fi
  353. X\fIAction\fR can be any of:
  354. X.nf
  355. X
  356. X        \fBdelete\fR
  357. X        \fBsave  \fIfoldername\fR
  358. X        \fBsavecopy \fIfoldername\fR
  359. X        \fBexecute  \fIcommand\fR
  360. X        \fBforward  \fIaddress\fR
  361. X        \fBleave\fR
  362. X
  363. X.fi
  364. XFor further information about the rules language, please see
  365. X\fIThe Elm Filter Guide\fR.
  366. X.sp
  367. XThe flags the \fIfilter\fR program understands are;
  368. X.TP 1.0i
  369. X.B "-c"
  370. XClear logs.  If this flag is used, the log files will be removed after
  371. Xbeing summarized by either "-s" or "-S" (see below).
  372. X.TP
  373. X.B "-n"
  374. XNot really.  Output what would happen if given message from standard
  375. Xinput, but don't actually do anything with it.
  376. X.TP
  377. X\fB-o \fIfile\fR
  378. XRedirect all log messages to the specified file or device.  (This is
  379. Xadded to more gracefully deal with changes in the file system (since
  380. Xsendmail is quite picky about modes of files being redirected into.))
  381. X.TP
  382. X.B "-r"
  383. XRules.  List the rules currently being used.
  384. X.TP
  385. X.B "-s"
  386. XSummarize.  List a summary of the message filtered log.
  387. X.TP
  388. X.B "-S"
  389. XThis is the same as `-s' but includes message-by-message
  390. Xinformation additionally.
  391. X.TP
  392. X.B "-v"
  393. XVerbose.  Give output on standard out for each message filtered.  Useful
  394. Xto have redirected to ``/dev/console'' and such.  (see \fB-a\fR too).
  395. X.SH AUTHOR
  396. XDave Taylor, Hewlett-Packard Laboratories.
  397. X.SH FILES
  398. X$HOME/.filter-rules     The ruleset for the users filter
  399. X.br
  400. X$HOME/.filterlog        A log of what has been done
  401. X.br
  402. X$HOME/.filtersum        A summary of what has been done
  403. X.br
  404. X/etc/passwd             Used to get users home directory
  405. X.SH SEE\ ALSO
  406. X\fIThe Elm Filter Guide\fR, by Dave Taylor.
  407. X.br
  408. Xreadmsg(1L), elm(1L), mail(1), mailx(1), sendmail(1,8)
  409. X.SH COMMENTS
  410. XNot real smart about pattern matching.  
  411. X.SH BUG REPORTS TO
  412. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  413. X.SH COPYRIGHTS
  414. X.ps 18
  415. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  416. X.br
  417. X.ps 18
  418. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  419. SHAR_EOF
  420. chmod 0444 doc/filter.1 || echo "restore of doc/filter.1 fails"
  421. echo "x - extracting doc/frm.1 (Text)"
  422. sed 's/^X//' << 'SHAR_EOF' > doc/frm.1 &&
  423. X.TH FRM 1L "Elm Version 2.2" "USENET Community Trust"
  424. X.ad b
  425. X.SH NAME
  426. Xfrm - list from and subject of all messages in mailbox or file
  427. X.SH SYNOPSIS
  428. X.B frm
  429. X[-n]
  430. X[ folder ]
  431. X.br
  432. X.B frm
  433. X[-n]
  434. X[ username ]
  435. X.SH DESCRIPTION
  436. X.I Frm
  437. Xoutputs a line per message in the current users mailbox 
  438. Xof the form;
  439. X.PP
  440. X<from> [subject]
  441. X.PP
  442. XIf a folder is specified, the program reads that folder
  443. Xrather than the default mailbox.  If the argument is a
  444. X\fIusername\fR then look for that user's mailbox.
  445. X.PP
  446. XFurthermore, if the \fI-n\fR flag is specified, the headers
  447. Xwill be numbered using the same numbering scheme that, for
  448. Xexample, \fIreadmsg\fR will understand.
  449. X.PP
  450. XFolder can be specified with the same notation as
  451. Xwhen invoking the \fBElm\fR mailer.
  452. X.SH AUTHOR
  453. XDave Taylor, Hewlett-Packard Laboratories.
  454. X.SH SEE\ ALSO
  455. Xreadmsg(1L), elm(1L), mail(1), mailx(1)
  456. X.SH BUG REPORTS TO
  457. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  458. X.SH COPYRIGHTS
  459. X.ps 18
  460. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  461. X.br
  462. X.ps 18
  463. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  464. SHAR_EOF
  465. chmod 0444 doc/frm.1 || echo "restore of doc/frm.1 fails"
  466. echo "x - extracting doc/listalias.1 (Text)"
  467. sed 's/^X//' << 'SHAR_EOF' > doc/listalias.1 &&
  468. X.TH LISTALIAS 1L "Elm Version 2.2" "USENET Community Trust"
  469. X.ad b
  470. X.SH NAME
  471. Xlistalias - list user and system aliases
  472. X.SH SYNOPSIS
  473. X.B listalias
  474. X[ regular-expression ]
  475. X.SH DESCRIPTION
  476. X.I Listalias
  477. Xoutputs a line per alias in both the user and the system 
  478. Xaliases.  Each line is of the form;
  479. X.nf
  480. X   
  481. X   <alias>     <address>  (<comment>)
  482. X
  483. X.fi
  484. XIf an optional regular expression is used, just the aliases
  485. Xthat match the specified expression are listed.  If not, 
  486. Xthey are all listed.
  487. X.sp
  488. XEither way, the output is sorted.
  489. X.SH AUTHOR
  490. XDave Taylor, Hewlett-Packard Laboratories.
  491. X.SH SEE\ ALSO
  492. Xnewalias(1L), elm(1L), checkalias(1L)
  493. X.SH BUGS
  494. XSince the program uses a pipe to egrep, how expressions are evaluated is
  495. Xa function of \fIthat\fR program, not this one!
  496. X.SH BUG REPORTS TO
  497. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  498. X.SH COPYRIGHTS
  499. X.ps 18
  500. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  501. X.br
  502. X.ps 18
  503. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  504. SHAR_EOF
  505. chmod 0444 doc/listalias.1 || echo "restore of doc/listalias.1 fails"
  506. echo "x - extracting doc/messages.1 (Text)"
  507. sed 's/^X//' << 'SHAR_EOF' > doc/messages.1 &&
  508. X.TH MESSAGES 1L "Elm Version 2.2" "USENET Community Trust"
  509. X.ad b
  510. X.SH NAME
  511. Xmessages - quick count of messages in mailbox or folder
  512. X.SH SYNOPSIS
  513. X.B messages
  514. X.br
  515. X.B messages
  516. Xfolder-name
  517. X.SH DESCRIPTION
  518. X.I Messages
  519. Xcounts the occurances of "^From\ " in either the current incoming 
  520. Xmailbox or the specified folder.
  521. X.P
  522. XThis is, in fact, a simple little shell script!!
  523. X.SH AUTHOR
  524. XDave Taylor, Hewlett-Packard Laboratories
  525. X.SH SEE\ ALSO
  526. Xfrom(1L), elm(1L)
  527. X.SH BUGS
  528. XDon't be foolish...
  529. X.SH BUG REPORTS TO
  530. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  531. X.SH COPYRIGHTS
  532. X.ps 18
  533. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  534. X.br
  535. X.ps 18
  536. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  537. SHAR_EOF
  538. chmod 0444 doc/messages.1 || echo "restore of doc/messages.1 fails"
  539. echo "x - extracting doc/newalias.1 (Text)"
  540. sed 's/^X//' << 'SHAR_EOF' > doc/newalias.1 &&
  541. X.TH NEWALIAS 1L "Elm Version 2.2" "USENET Community Trust"
  542. X.ad b
  543. X.SH NAME
  544. Xnewalias - install new elm aliases for user and/or system
  545. X.SH SYNOPSIS
  546. X.B newalias
  547. X[-g]
  548. X.SH DESCRIPTION
  549. X.I Newalias
  550. Xcreates new hash and data files from a text file.
  551. XIf the program is invoked with the
  552. X.I -g
  553. X(global) flag, the program updates the system alias files.
  554. XOtherwise, the program looks for a file called \fI$HOME/.elm/aliases.text\fR
  555. Xand, upon finding it, creates files \fI$HOME/.elm/aliases.hash\fR and
  556. X\fI$HOME/.elm/aliases.data\fR for the
  557. X.I elm
  558. Xprogram.
  559. X.PP
  560. XThe format that the program expects is;
  561. X.sp
  562. X.nf
  563. X    alias, alias, .. = comment = address
  564. Xor
  565. X    alias, alias, .. = comment = alias, alias, ...
  566. X   
  567. XThe first form is for an individual user such as;
  568. X
  569. X    dave, taylor = Dave Taylor = veeger!hpcnou!dat
  570. X
  571. Xand the second is for defining a group alias such as;
  572. X
  573. X    gurus = Unix Gurus = alan, john, dave, mike, richard,
  574. X                     larry, t_richardson
  575. X
  576. X.fi
  577. X.sp
  578. XNote that lines can be continued at will, blank lines are accepted
  579. Xwithout error, and that any line starting with '#' is considered a
  580. Xcomment and is not processed.
  581. X.PP
  582. XFinally, aliases can contain other aliases, and/or groups;
  583. X.sp
  584. X.nf
  585. X    unix = Unix people = gurus, taylor, jonboy
  586. X.fi
  587. X' onto the next page, if you please
  588. X.sp 3
  589. X.SH FILES
  590. X$HOME/.elm/aliases.text         alias source for user 
  591. X.br
  592. X$HOME/.elm/aliases.hash         alias hash table for user
  593. X.br
  594. X$HOME/.elm/aliases.data         alias data file for user
  595. X.br
  596. X/usr/mail/.alias_text           alias source for system
  597. X.br
  598. X/usr/mail/.alias_hash           alias hash table for system
  599. X.br
  600. X/usr/mail/.alias_data           alias data file for system
  601. X.SH AUTHOR
  602. XDave Taylor, Hewlett-Packard Laboratories.
  603. X.SH SEE\ ALSO
  604. Xelm(1L), checkalias(1L), mail(1), mailx(1)
  605. X.SH DIAGNOSTICS
  606. XNewalias has a couple of descriptive error messages which
  607. Xdon't need to be detailed here.  It is, however, worth
  608. Xnoting that the
  609. X.I checkalias
  610. Xprogram can be used to ensure that the aliases are in the
  611. Xproper order and are available for the 
  612. X.I elm
  613. Xsystem.
  614. X.SH BUG REPORTS TO
  615. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  616. X.SH COPYRIGHTS
  617. X.ps 18
  618. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  619. X.br
  620. X.ps 18
  621. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  622. SHAR_EOF
  623. chmod 0444 doc/newalias.1 || echo "restore of doc/newalias.1 fails"
  624. echo "x - extracting doc/newmail.1 (Text)"
  625. sed 's/^X//' << 'SHAR_EOF' > doc/newmail.1 &&
  626. X.TH NEWMAIL 1L "Elm Version 2.2" "USENET Community Trust"
  627. X.ad b
  628. X.SH NAME
  629. Xnewmail,wnewmail - programs to asynchronously notify of new mail
  630. X.SH SYNOPSIS
  631. X.B newmail
  632. X.B [-d]
  633. X.B [-i \fIinterval\fB]
  634. X.B [-w]
  635. X\fIfile-spec\fR {\fIfile-spec\fR...}
  636. X.br
  637. X.B wnewmail
  638. X.B [-d]
  639. X.B [-i \fIinterval\fB]
  640. X.B [-w]
  641. X\fIfile-spec\fR {\fIfile-spec\fR...}
  642. X.PP
  643. X.SH DESCRIPTION
  644. X.I Newmail\^
  645. Xis a program to allow monitoring of mailboxes in an intelligent
  646. Xfashion.  It is based loosely on \fIbiff(1)\fR and the version
  647. Xof \fInewmail\fR that was distributed with \fBElm 1.7\fR.
  648. X.P
  649. XThe basic operation is that the program will check the list of
  650. Xspecified mailboxes each \fIinterval\fR seconds and will list
  651. Xany new mail that has arrived in any of the mailboxes,
  652. Xindicating the sender name, and the subject of the message.
  653. X.P
  654. XEach entry displayed can be in a number of different formats
  655. Xdepending on the mode of the program, the number of folders
  656. Xbeing monitored, and the status of the message.  If you're 
  657. Xrunning it as a \fIwindow\fR (e.g. ``-w''
  658. Xor invoked as \fIwnewmail\fR) then the output will be
  659. Xsimilar to:
  660. X.nf
  661. X
  662. X   \fIsender name\fR - \fIsubject of message\fR
  663. X   Priority: \fIsender name\fR - \fIsubject of message\fR
  664. X
  665. X.fi
  666. Xwhere <sender name> is either the name of the person sending it,
  667. Xif available (the ARPA 'From:' line) or some other brief
  668. Xindication of origin If there
  669. Xis no subject, the message "<no subject>" will appear on
  670. Xthe screen.
  671. X.P
  672. XFolders are indicated by having the folder name appear first
  673. Xon the output line, as in:
  674. X.nf
  675. X
  676. X   \fIfolder\fR: \fIsender name\fR - \fIsubject of message\fR
  677. X
  678. X.fi
  679. XIf you're running \fInewmail\fR without the windows option,
  680. Xthen the output is more suitable for popping up on an otherwise
  681. Xactive screen, and will be formatted:
  682. X.nf
  683. X
  684. X   >> New mail from \fIsender name\fR - \fIsubject of message\fR
  685. X   >> Priority mail from \fIsender name\fR - \fIsubject of message\fR
  686. X
  687. X.fi
  688. XAgain, with folder names indicated as a prefix.
  689. X.P
  690. XThe flags available are:
  691. X.TP 1.0i
  692. X.B "-d"
  693. XThis will turn on the debugging, verbose output mode.  It is not
  694. Xrecommended that you use this option unless you're interested in
  695. Xactually debugging the program.
  696. X.TP
  697. X.B "-i \fIinterval\fR  "
  698. XThis will change the frequency that the program checks the folders
  699. Xto the interval specified, in seconds.  The default interval for
  700. Xthe program is 60 seconds.  \fINote: if you change the interval
  701. Xto less than 10 seconds, the program will warn you that it isn't
  702. Xrecommended.\fR
  703. X.TP
  704. X.B "-w"
  705. XUse of the ``-w'' flag will simulate having the program run
  706. Xfrom within a window (e.g. the more succinct output format,
  707. Xand so on).  Most likely, rather than using this option you
  708. Xshould be simply invoking \fIwnewmail\fR instead.
  709. X.P
  710. X\fIFile specs\fR are made up of two components, the
  711. X\fIfolder name\fR and the \fIprefix string\fR, the
  712. Xlatter of which can always be omitted.
  713. XThe format is \fIfoldername=prefixstring\fR, and
  714. Xyou can specify folders by full name, by simply
  715. Xthe name of the user whose mailbox should be 
  716. Xmonitored, or by the standard \fBElm\fR 
  717. Xmetacharacters to specify your folder 
  718. Xdirectory (e.g. ``+'', ``='', or ``%'').
  719. X.P
  720. XFolders that cannot be opened due to permission mismatches
  721. Xwill cause the program to immediately abort.  On the other
  722. Xhand, files that do not exist will continue to be checked
  723. Xevery \fIinterval\fR seconds, so some care should be 
  724. Xexercised when invoking the program.
  725. X.P
  726. XThe program will run until you log out or explicitly kill
  727. Xit, and can internally reset 
  728. Xitself if any of the folders shrink in size and 
  729. Xthen grow again.
  730. X.P
  731. XThe default folder to monitor is always your incoming mailbox.
  732. X.SH EXAMPLES
  733. XSome example invocations:
  734. X.nf
  735. X
  736. X    $ \fBnewmail\fR
  737. X
  738. X.fi
  739. Xwill check your imcoming mailbox every 60 seconds.
  740. X.nf
  741. X
  742. X    $ \fBnewmail  -i  15  joe  root\fR
  743. X
  744. X.fi
  745. Xwill monitor the incoming mailboxes for ``joe'' and ``root'',
  746. Xchecking eery 15 seconds for new mail.
  747. X.nf
  748. X
  749. X    $ \fBnewmail  "mary=Mary"  +postmaster=POBOX\fR
  750. X
  751. X.fi
  752. Xwill monitor the incoming mailbox for user ``mary'', prefixing
  753. Xall messages with the string ``Mary'', and the folder in 
  754. Xthe users \fImaildir\fR directory called ``postmaster'', 
  755. Xprefixing all of those messages with ``POBOX''.
  756. X.P
  757. XYou can also have more complex monitoring too, for example:
  758. X.nf
  759. X
  760. X    $ \fBnewmail  -i  30  $LOGNAME=me  ${LOGNAME}su=myroot   /tmp/mbox\fR
  761. X
  762. X.fi
  763. Xwill check every 30 seconds for the users mailbox, a mailbox that
  764. Xis the users login-name with ``su'' appended (e.g. ``joe'' would
  765. Xbecome ``joesu'') and the file /tmp/mbox, prefixing new mail
  766. Xfor each with ``me'', ``myroot'' and ``mbox'' respectively.
  767. X.SH AUTHOR
  768. XDave Taylor, Hewlett-Packard Laboratories.
  769. X.SH SEE ALSO
  770. Xnotify in sh(1) or csh(1)
  771. X.SH BUG REPORTS TO
  772. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  773. X.SH COPYRIGHTS
  774. X.ps 18
  775. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  776. X.br
  777. X.ps 18
  778. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  779. SHAR_EOF
  780. chmod 0444 doc/newmail.1 || echo "restore of doc/newmail.1 fails"
  781. echo "x - extracting doc/printmail.1 (Text)"
  782. sed 's/^X//' << 'SHAR_EOF' > doc/printmail.1 &&
  783. X.TH PRINTMAIL 1L "Elm Version 2.2" "USENET Community Trust"
  784. X.ad b
  785. X.SH NAME
  786. Xprintmail - format mail in a readable fashion for printing
  787. X.SH SYNOPSIS
  788. X.B printmail
  789. X{-p}
  790. X{filename}
  791. X.SH DESCRIPTION
  792. X.I Printmail
  793. Xcopies all messages from either the file specified or the
  794. Xdefault user mailbox with each message separated by a line of dashes.
  795. XWith the
  796. X.B \-p
  797. Xoption, the messages are separated by a formfeed instead.
  798. X.sp
  799. XIn fact, this command is actually just a slightly differently
  800. Xformatted call to \fIreadmsg\fR:
  801. X.nf
  802. X    readmsg {-p} {-f \fIfilename\fR} *
  803. X.fi
  804. Xwhich does all the work here.
  805. X.SH EXAMPLE
  806. XA typical usage of this command is;
  807. X.nf
  808. X
  809. X    printmail | lpr 
  810. X
  811. X.fi
  812. X.SH AUTHOR
  813. XDave Taylor, Hewlett-Packard Laboratories.
  814. X.SH SEE\ ALSO
  815. Xreadmsg(1L)
  816. X.SH BUG REPORTS TO
  817. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  818. X.SH COPYRIGHTS
  819. X.ps 18
  820. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  821. X.br
  822. X.ps 18
  823. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  824. SHAR_EOF
  825. chmod 0444 doc/printmail.1 || echo "restore of doc/printmail.1 fails"
  826. echo "x - extracting doc/readmsg.1 (Text)"
  827. sed 's/^X//' << 'SHAR_EOF' > doc/readmsg.1 &&
  828. X.TH READMSG 1L "Elm Version 2.2" "USENET Community Trust"
  829. X.ad b
  830. X.SH NAME
  831. Xreadmsg - read messages from incoming mail
  832. X.SH SYNOPSIS
  833. X.B readmsg 
  834. X[\fB-p\fR]
  835. X[\fB-n\fR]
  836. X[\fB-f filename\fR]
  837. X[\fB-h\fR]
  838. X.br
  839. X.B readmsg
  840. X[\fB-p\fR]
  841. X[\fB-n\fR]
  842. X[\fB-f filename\fR]
  843. X[\fB-h\fR]
  844. Xnumber [number ...]
  845. X.br
  846. X.B readmsg 
  847. X[\fB-p\fR]
  848. X[\fB-n\fR]
  849. X[\fB-f filename\fR]
  850. X[\fB-h\fR]
  851. Xpattern
  852. X.br
  853. X.SH DESCRIPTION
  854. X.I Readmsg
  855. Xis a program that gives the \fIelm\fR user the functionality of
  856. Xthe mailx "~r" command from the editor of their choice.  There
  857. Xare three different ways of using the program;
  858. X.P
  859. XFirst off, if you're actually creating a reply to a message
  860. Xfrom within the \fIelm\fR system then \fIreadmsg\fR without any
  861. Xarguments will include a summary of the headers and the body 
  862. Xof the message being replied
  863. Xto.  If you aren't currently editing a message the program will
  864. Xreturn an error.
  865. X.P
  866. XSecondly, if you want to include certain messages, you can
  867. Xspecify them by listing their ordinal locations in the 
  868. Xmail file (that is, their "message numbers")
  869. Xup to 25 at a time.  The \fImeta-\fRnumber '$' is understood to mean
  870. Xthe last message in the mailfile.  Similarly, '*' is understood to
  871. Xrepresent every message in the file (that is, 1-$)
  872. X.P
  873. XFinally, you can also specify a pattern that occurs in one of
  874. Xthe messages as a way of including it.  This pattern can be
  875. Xtyped in directly (no quotes) if the words are separated by a 
  876. Xsingle space in the actual message.  The pattern matching is case
  877. Xsensitive, so "Hello" and "hello" are NOT the same thing!!
  878. X.sp
  879. X.P
  880. XThe \fB-f\fR flag indicates that you'd rather use the file specified
  881. Xfor the operations specified rather than the default mailbox.
  882. X.P
  883. XThe \fB-h\fR flag instructs the program to include the entire header
  884. Xof the matched message or messages when displaying their
  885. Xtext.  (default is to display the From: Date: and Subject: lines
  886. Xonly)
  887. X.P
  888. XThe \fB-n\fR flag instructs the program to exclude \fIall\fR
  889. Xheaders.  This is used mostly for extracting files mailed and
  890. Xsuch.
  891. X.P
  892. XFinally, the \fB-p\fR flag indicates that the program should
  893. Xput form-feeds (control-L) between message headers.
  894. X.sp
  895. X.SH "EXAMPLES"
  896. XFirst off, to use this from within \fBvi\fR to include the text of the 
  897. Xcurrent message at the end of the current message, you could
  898. Xuse the command;
  899. X.nf
  900. X
  901. X    !!readmsg
  902. X
  903. X.fi
  904. X(as you hit the 'G' the editor will put you at the bottom of the screen
  905. Xwith the '!' prompt).
  906. X.sp 2
  907. XLet's look at something more interesting, however;
  908. X.sp
  909. XSuppose you have the mailfile;
  910. X.nf
  911. X
  912. X   From joe Jun 3 1986 4:45:30 MST
  913. X   Subject: hello
  914. X   
  915. X   Hey Guy!  Wanta go out and have a milk this evening?
  916. X   
  917. X   Joe
  918. X   
  919. X   From john Jun 3 1986 4:48:20 MST
  920. X   Subject: Dinner at Eight
  921. X   From: John Dinley <xyz!john>
  922. X
  923. X   Remember you should show up about eight, okay?
  924. X
  925. X           - John D -
  926. X
  927. X   From xxzyz!cron Jun 3 1986 5:02:43 MST
  928. X
  929. X   Cannot connect to server: blob
  930. X   Job 43243 deleted from queue.
  931. X   
  932. X.fi
  933. XThe following commands will result in;
  934. X.nf
  935. X
  936. X  $ readmsg 2        
  937. X  [ display the second message, from John ]
  938. X
  939. X  $ readmsg         
  940. X  [ an error, unless we're calling from \fIelm\fR ]
  941. X
  942. X  $ readmsg BLOB    
  943. X  [ no match - case sensitive! ]
  944. X
  945. X  $ readmsg -h connect to server 
  946. X  [ displays third message, including headers ]
  947. X
  948. X.fi
  949. X.SH FILES
  950. X/usr/mail/<username>           The incoming mail
  951. X.br
  952. X$home/.readmsg            The temp file from \fIelm\fR
  953. X.SH AUTHOR
  954. XDave Taylor, Hewlett-Packard Laboratories
  955. X.SH SEE\ ALSO
  956. Xnewmail(1L), elm(1L)
  957. X.SH BUGS
  958. XThe '*' metacharacter doesn't always work as expected!
  959. X.br
  960. XPerhaps the pattern matching should be case insensitive?
  961. X.SH BUG REPORTS TO
  962. XSyd Weinstein    elm@dsinc.UUCP    (dsinc!elm)
  963. X.SH COPYRIGHTS
  964. X.ps 18
  965. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  966. X.br
  967. X.ps 18
  968. X\fB\(co\fR\s12 Copyright 1988, 1989 by The USENET Community Trust
  969. SHAR_EOF
  970. chmod 0444 doc/readmsg.1 || echo "restore of doc/readmsg.1 fails"
  971. echo "x - extracting doc/tmac.n (Text)"
  972. sed 's/^X//' << 'SHAR_EOF' > doc/tmac.n &&
  973. X\" @(#)$Id: tmac.n,v 2.5 89/03/20 20:17:04 syd Exp $
  974. X.\" The News macro package
  975. X.\"
  976. X.\" This  is  the macro package that is used to format news documents.  It
  977. X.\" was written because many sites do not have one of the -mm or -ms pack-
  978. X.\" ages that the documents use.   This is NOT compatible with EITHER, but
  979. X.\" (I hope) will become the standard for all news  documents  (man  pages
  980. X.\" excepted, since everyone seems to have -man.)
  981. X.\"
  982. X.\" This package was written using  only  the  "NROFF/TROFF Users' Guide",
  983. X.\" and  therefore  if  you  can run NROFF/TROFF, you can legitimately use
  984. X.\" this package.  However, because NROFF/TROFF are proprietary  programs,
  985. X.\" I  cannot  place  this  package in the public domain.  This should not
  986. X.\" matter, because if you legitimately have  NROFF/TROFF,  you  have  the
  987. X.\" documentation; if not, you can't run off the documentation anyway.
  988. X.\"
  989. X.\" This  package may be circulated freely with the news documentation; it
  990. X.\" may not be sold, but is to be distributed with  the  unformatted  news
  991. X.\" documents.  However,  the name of the author and the place at which it
  992. X.\" was written (in the author's own  time,  of  course)  are  not  to  be
  993. X.\" removed  from the package regardless of how it is modified or altered.
  994. X.\" Further, please do not distribute this package if you make any changes
  995. X.\" because  I  don't want to get bug reports of macros I haven't written;
  996. X.\" if you have a goodie you want me to add, send it to me and we'll talk.
  997. X.\" (I really do like feedback!)  I'd really appreciate your cooperation.
  998. X.\"
  999. X.\" Author:    Matt Bishop
  1000. X.\"        Research Institute for Advanced Computer Science
  1001. X.\"        Mail Stop 230-5
  1002. X.\"         NASA Ames Research Center
  1003. X.\"        Moffett Field, CA  94035
  1004. X.\"
  1005. X.\" version 1.0        September 28, 1985    mab@riacs.arpa
  1006. X.\"     initial version
  1007. X.\" version 1.1        October 25, 1985    mab@riacs.arpa
  1008. X.\"    fixed an incredibly obscure footnote bug (that occurred twice in
  1009. X.\"    the news documentation!) which put footnoted words on  one  page
  1010. X.\"    and the footnote on the next if the word was in the next-to-last
  1011. X.\"    or last line; commented it, and generally cleaned up
  1012. X.\" Version 1.2        October 27, 1985    mab@riacs.arpa
  1013. X.\"    Added a few more comments and a check to keep footnotes lined up
  1014. X.\"    with the bottom margin.
  1015. X.\" Version 1.3        February 12, 1986    mab@riacs.arpa
  1016. X.\"    Added an error check to catch unmatched ef's and ed's
  1017. X.\" Version 1.4        December 29, 1986    mab@riacs.edu
  1018. X.\"    Changed footnote for ux, pd, and vx macros and  added  a  string
  1019. X.\"    for rg ("Registered Trademark")
  1020. X.\" Version 1.5        January 2, 1989        Matt.Bishop@dartmouth.edu
  1021. X.\"    Minor modifications for nroff compatibility
  1022. X.\" Version 1.6        March 15, 1989        Matt.Bishop@dartmouth.edu
  1023. X.\"                        ..!bear.dartmouth.edu!bishop
  1024. X.\"    Fixed a bug in footnote handling (again, sigh ...)  This one
  1025. X.\"    occurred when the the "fo" trap position was reset just beneath
  1026. X.\"    the current line; the footnote overflow trap would kick in and
  1027. X.\"    never be closed.
  1028. X.\"
  1029. X.\"
  1030. X.\" **********
  1031. X.\" these preserve and restore various things
  1032. X.\" they are used to shorten other macros
  1033. X.de yf                    \" restore fonts
  1034. X.ft \\n(f2                \" previous font
  1035. X.ft \\n(f1                \" current font
  1036. X..
  1037. X.de yi                    \" restore indents
  1038. X'in \\n(i2u                \" previous indent
  1039. X'in \\n(i1u                \" current indent
  1040. X..
  1041. X.de ys                    \" restore point sizes
  1042. X.ps \\n(s2                \" previous point size
  1043. X.ps \\n(s1                \" current point size
  1044. X..
  1045. X.de yv                    \" restore vertical spacings
  1046. X.vs \\n(v2u                \" previous vertical spacing
  1047. X.vs \\n(v1u                \" current vertical spacing
  1048. X..
  1049. X.de ya                    \" restore everything
  1050. X.yf                    \" restore fonts
  1051. X.yi                    \" restore indents
  1052. X.ys                    \" restore point sizes
  1053. X.yv                    \" restore vertical spacing
  1054. X..
  1055. X.de zf                    \" preserve fonts
  1056. X.nr f1 \\n(.f                \" current font
  1057. X.ft                    \" switch to previous font
  1058. X.nr f2 \\n(.f                \" previous font
  1059. X.ft                    \" back to current font
  1060. X..
  1061. X.de zi                    \" preserve indents
  1062. X.nr i1 \\n(.iu                \" current indent
  1063. X'in                    \" switch to previous indent
  1064. X.nr i2 \\n(.iu                \" previous indent
  1065. X'in                    \" back to current indent
  1066. X..
  1067. X.de zs                    \" preserve point sizes
  1068. X.nr s1 \\n(.su                \" current point size
  1069. X.ps                    \" switch to previous point size
  1070. X.nr s2 \\n(.su                \" previous point size
  1071. X.ps                    \" back to current point size
  1072. X..
  1073. X.de zv                    \" preserve vertical spacings
  1074. X.nr v1 \\n(.vu                \" current vertical spacing
  1075. X.vs                    \" switch to previous vertical spacing
  1076. X.nr v2 \\n(.vu                \" previous vertical spacing
  1077. X.vs                    \" back to current vertical spacing
  1078. X..
  1079. X.de za                    \" save everything
  1080. X.zf                    \" save fonts
  1081. X.zi                    \" save indents
  1082. X.zs                    \" save point sizes
  1083. X.zv                    \" save vertical spacings
  1084. X..
  1085. X.\" **********
  1086. X.\" these actually print the header and footer titles
  1087. X.\" they are defined separately from the "hd" and "fo" macros
  1088. X.\" to make user redefinition easy
  1089. X.de pt                    \" print header title
  1090. X.                    \" omit header on first page
  1091. X.if \\n%>1 \{\
  1092. X'    sp |\\$1u            \" move to proper position
  1093. X.    ft 1                \" change to default font
  1094. X.    ps \\n(ps            \" change to default point size
  1095. X.    vs \\n(vs            \" change to default spacing
  1096. X.    tl '\\*(h0'\\*(h1'\\*(h2'    \" center title
  1097. X.    vs                \" restore current vertical spacing
  1098. X.    ps                \" restore current point size
  1099. X.    ft                \" restore current font
  1100. X.\}
  1101. X..
  1102. X.de pf                    \" print footer title
  1103. X.ft 1                    \" change to default font
  1104. X.ps \\n(ps                \" change to default point size
  1105. X.vs \\n(vs                \" change to default spacing
  1106. X.ie \\n%=1 .tl '\\*(h0'\\*(h1'\\*(h2'    \" on first page, print the header here
  1107. X.el        .tl '\\*(f0'\\*(f1'\\*(f2'    \" on other pages, print the footer
  1108. X.vs                    \" restore current vertical spacing
  1109. X.ps                    \" restore current point size
  1110. X.ft                    \" restore current font
  1111. X..
  1112. X.\" **********
  1113. X.\" these are the top of page (header) and bottom of page (footer) macros
  1114. X.\" they don't actually print anything, just call the right macros
  1115. X.de hd                    \" header -- do top of page processing
  1116. X.if t .if \\n(cm .tl '\(rn'''        \" drop cut mark if needed
  1117. X.pt \\n(ttu                \" print header
  1118. X.nr fc 0 1                \" init footnote count
  1119. X.nr fs \\n(.pu-\\n(bmu-1u        \" if any footnotes, start print here
  1120. X.nr fp 0-\\n(bmu            \" reset current footer place
  1121. X.ch fo -\\n(bmu                \" reset footer trap
  1122. X.if \\n(dn .fz                \" put leftover footnotes st bottom
  1123. X.ya                    \" restore font, etc.
  1124. X'sp |\\n(tmu                \" move to top of body
  1125. X.ns                    \" don't allow any more space
  1126. X..
  1127. X.de fo                    \" footer -- do bottom of page processing
  1128. X.za                    \" save font, etc.
  1129. X.rs                    \" you want motions here
  1130. X.nr dn 0                \" clobber diversion size register
  1131. X.if \\n(fc .fd                \" now print the footnotes, if any
  1132. X'bp                    \" force out page
  1133. X..
  1134. X.\" **********
  1135. X.\" these are the footnote macros
  1136. X.\" here's an overview:
  1137. X.\"    Footnotes are processed in environment #1, which is  initialized
  1138. X.\"    at the bottom of this package.  When "fn" is called, nroff/troff
  1139. X.\"    switches to this environment.  The body of the footnote is saved
  1140. X.\"    in  the  diversion  "tf" (for "temporary footnote"), so you will
  1141. X.\"    NEVER spring a trap during the first reading of a footnote. When
  1142. X.\"    "ef" ("end footnote") is called,  the diversion  is  closed.  If
  1143. X.\"    this  is the first footnote on the page (ie, the number register
  1144. X.\"    "fc" is 1), and the footnote height (plus the height of 1  line)
  1145. X.\"    crosses  the  bottom  margin,  you get the footnoted word on one
  1146. X.\"    page and the footnote on the other.  In this case we  just  call
  1147. X.\"    "fo"  manually  (taking case it cannot be re-invoked on the same
  1148. X.\"    page!)  If this situation does not occur,  we  just  adjust  the
  1149. X.\"    footer  trap's  position upwards (we'll get to how far in a min-
  1150. X.\"    ute); if this puts the trap above the current line,  we  reposi-
  1151. X.\"    tion  the trap just beneath the current line to be sure of trig-
  1152. X.\"    triggering it once the current line is forced out.
  1153. X.\"     To reposition the footer trap, we proceed as  follows.  Because
  1154. X.\"    the  trap  may be sprung in the middle of a line, it is possible
  1155. X.\"    that the footnote will not fit on the page (regardless of  where
  1156. X.\"    on the page the footnoted word occurs -- really!) if we move the
  1157. X.\"    trap up by the size of  the  footnote  diversion  "tf".  So,  we
  1158. X.\"    fudge things a little bit -- for the first footnote on each page
  1159. X.\"    we move the footer trap up 1 extra line ("line" being 1v in env-
  1160. X.\"    ironment  #0).   Unless  the point size and vertical spacing are
  1161. X.\"    increased between the first footnote and the footer trap's being
  1162. X.\"    sprung,  this  will  keep  the footnotes on the same page as the
  1163. X.\"    footnoted word.  But as there may be now as much as 1v of  space
  1164. X.\"    between the footnote and the bottom margin, which looks HIDEOUS,
  1165. X.\"    we use the number register "fs" to mark where  the  footer  trap
  1166. X.\"    would  REALLY go, and just space to it when it comes time to put
  1167. X.\"    out the footnotes.
  1168. X.de fd                    \" dump footnotes
  1169. X.nr gs 1v                \" get a measure of 1 line in env #0
  1170. X.ev 1                    \" switch to footnote environment
  1171. X.nr gs +2v                \" min of 2 lines of footnotes
  1172. X.                    \" if the number register ns > 0,
  1173. X.                    \" the last text line may contain a
  1174. X.                    \" footnote that is too big to fit;
  1175. X.                    \" this checks for such a note and
  1176. X.                    \" if so, forces the footnote into
  1177. X.                    \" the "fy" diversion that carries
  1178. X.                    \" it onto the next text page
  1179. X.ie (\\n(nsu>0)&(\\n(gsu>=\\n(.tu) 'sp \\n(gsu    \" be sure you can get it down
  1180. X.el .if \\n(fsu>\\n(nlu 'sp \\n(fsu-\\n(nlu    \" move to footnote start position
  1181. X'nf                    \" don't reprocess footnotes
  1182. X'in 0                    \" don't indent them any more either
  1183. X.tf                    \" drop text of footnotes
  1184. X.rm tf
  1185. X.if '\\n(.z'fy' .di            \" end overflow diversion, if any
  1186. X.nr fc 0                \" re-init footnote count
  1187. X.ev                    \" return to usual environment
  1188. X..
  1189. X.de fn                    \" start footnote
  1190. X.                    \" look for nested footnotes -- ILLEGAL
  1191. X.ie \\n(if>0 .er "footnote within footnote"
  1192. X.el .da tf                \" append footnote to footnote diversion
  1193. X.nr if +1                \" increment level of footnoting
  1194. X.nr fc +1                \" one more footnote on this page
  1195. X.if \\n(fc=1 .nr fp -1v            \" The reason for this "fudge factor"
  1196. X.                    \" is that there is no way to force
  1197. X.                    \" NROFF/TROFF to invoke a macro at
  1198. X.                    \" the end of each line.  At times,
  1199. X.                    \" the trap boundary will not match up
  1200. X.                    \" with the bottom of a line, so the
  1201. X.                    \" "fo" trap which is set at 2320 may
  1202. X.                    \" not be triggered until 2340 -- and
  1203. X.                    \" then the footnote won't fit.  This
  1204. X.                    \" gives some slack so the footnote is
  1205. X.                    \" more likely to fit. *sigh*
  1206. X.ev 1                    \" enter footnote environment
  1207. X.if \\n(fc=1 .fs            \" drop separator if first footnote
  1208. X.br                    \" flush out any previous line in footnote
  1209. X.fi                    \" process footnote in fill mode
  1210. X..
  1211. X.de ef                    \" end footnote
  1212. X.br                    \" flush out the line in footnote
  1213. X.ie \\n(if<=0 .er "end footnote has no corresponding begin footnote"
  1214. X.el \{\
  1215. X.    nr if -1            \" decrement level of footnoting
  1216. X.    nr fg 2v            \" remember this for repositioning fo
  1217. X.    ev                \" back to usual environment
  1218. X.    if \\n(if=0 \{\
  1219. X.        di            \" end of footnote proper
  1220. X.        nr fp -\\n(dnu        \" "fo" will be moved at least up this far
  1221. X.        nr fs -\\n(dnu        \" increase size of footnote
  1222. X.        ch fo \\n(fpu        \" reposition "fo" trap (first guess)
  1223. X.                    \" the first part of the "ie" clause
  1224. X.                    \" is taken in the special case
  1225. X.                    \" described above
  1226. X.        ie (\\n(fc=1)&((\\n(nlu+1v+\\n(fgu)>=(\\n(.pu-\\n(bmu)) \{\
  1227. X.            nr ns \\n(dnu    \" suppress footnote separator
  1228. X.                    \" since this footnote contains it
  1229. X.                    \" keep "fo" from being invoked twice
  1230. X.            ch fo \\n(.pu+1i
  1231. X.            fo        \" force the page out AT ONCE
  1232. X.            nr ns 0        \" re-enable footnote separator
  1233. X.        \}
  1234. X.                    \" footnote won't fit completely
  1235. X.                    \" invoke the footer trap but
  1236. X.                    \" don't worry about the footnote
  1237. X.                    \" separator (it's already there)
  1238. X.        el .if (\\n(nlu+1v)>=(\\n(.pu+\\n(fpu) \{\
  1239. X.                    \" as before we must reposition the
  1240. X.                    \" "fo" trap to prevent "fo" from
  1241. X.                    \" being invoked twice
  1242. X.            ch fo \\n(.pu+1i
  1243. X.            fo        \" force the page out AT ONCE
  1244. X.        \}
  1245. X.    \}
  1246. X.\}
  1247. X..
  1248. X.de fs                    \" drop footnote separator
  1249. X.                    \" only if not already dropped
  1250. X.if \\n(ns=0 \l'1i'
  1251. X.nr ns 0                \" in case footnotes are over 1 page long
  1252. X..
  1253. X.de fx                    \" process footnote overflow
  1254. X.if \\n(fc .di fy            \" stuff them in the right place
  1255. X..
  1256. X.de fz                    \" deposit footnote overflow
  1257. X.fn                    \" treat it as a footnote
  1258. X.nf                    \" it's already been processed
  1259. X.in 0                    \"   and indented
  1260. X.fy                    \" "fx" put it here
  1261. X.ef                    \" end the footnote
  1262. X..
  1263. X.\" **********
  1264. X.\" the ones after here are user-invoked (like "fn" and "ef" above)
  1265. X.\" title, author, etc.
  1266. X.de mt                    \" main title
  1267. X\&
  1268. X.sp |\\n(mtu                \" space
  1269. X.ft 3                    \" in bold
  1270. X.ps \\n(ps+2p                \" large point size and
  1271. X.vs \\n(vs+2p                \" vertical spacing
  1272. X.ce 1000                \" center the title
  1273. X.nr t2 1                \" space it
  1274. X..
  1275. X.de au                    \" author
  1276. X.nr t2 0                \" spacing here
  1277. X.sp 2v                    \" space
  1278. X.ft 2                    \" in italics
  1279. X.ps \\n(ps                \" usual point size and
  1280. X.vs \\n(vs                \" vertical spacing
  1281. X.ce 1000                \" center the name(s)
  1282. X..
  1283. X.de ai                    \" author's institution
  1284. X.if \\n(t2 .sp 2v            \" space after a title
  1285. X.nr t2 0                \" institution
  1286. X.ft 2                    \" in italics
  1287. X.ps \\n(ps                \" usual point size and
  1288. X.vs \\n(vs                \" vertical spacing
  1289. X.ce 1000                \" center the name(s)
  1290. X..
  1291. X.de bt                    \" begin text macro
  1292. X.nr t2 0                \" hold it here
  1293. X.nr it +1                \" mark as called
  1294. X.ce 0                    \" end any centering
  1295. X.sn 3v                    \" a little bit of space
  1296. X..
  1297. X.\" paragraph
  1298. X.de si                    \" start indented section
  1299. X.nr lo \\n(lm                \" remember the current level
  1300. X.nr lm +1                \" go to the next level
  1301. X.ie '\\$1'' .nr l\\n(lm \\n(l\\n(lo+5n    \" if no arg, indent 5n
  1302. X.el         .nr l\\n(lm \\$1n        \" otherwise, indent that much
  1303. X..
  1304. X.de ei                    \" end indent
  1305. X.nr lm -1                \" down one level
  1306. X.if \\n(lm<0 .nr lm 0            \" make sure you don't go too far
  1307. X..
  1308. X.de pg                    \" plain old paragraph
  1309. X.if !\\n(it .bt                \" end the title and such
  1310. X.sn \\n(pdu                \" inter-paragraph spacing
  1311. X.ft 1                    \" reset a few things (paranoia)
  1312. X.                    \" these ONLY if not in footnote
  1313. X.ie \\n(if=0 \{\
  1314. X.    ps \\n(ps            \" reset point size
  1315. X.    vs \\n(vs            \" reset vertical spacing
  1316. X.    ne 1v+\\n(.Vu            \" slightly more than 1 line
  1317. X.\}
  1318. X.el \{\
  1319. X.    ps \\n(ps-2p            \" reset point size
  1320. X.    vs \\n(vs-2p            \" reset vertical spacing
  1321. X.\}
  1322. X.in \\n(l\\n(lmu            \" stop any indenting
  1323. X.ce 0                    \" stop any centering
  1324. X.if !'\\$1'L' .if !'\\$1'l' .ti +\\n(piu    \" indent the sucker
  1325. X..
  1326. X.de lp                    \" labelled paragraph
  1327. X.pg l                    \" reset paragraph
  1328. X.if \\n(.$>1 .nr li \\$2n        \" if indent given use it
  1329. X.in +\\n(liu                \" indent for paragraph
  1330. X.ti -\\n(liu                \" force first line NOT to indent
  1331. X.ta +\\n(liu                \" for the label
  1332. X\&\\$1\t\c
  1333. X.if \\w'\\$1'u>=(\\n(l\\n(lmu+\\n(liu) .br    \" don't overwrite
  1334. X..
  1335. X.\" The following two macros (hu & hn) have been modified for ELM usage.
  1336. X.\" If the macros have text as part of the macro call, the text will be
  1337. X.\" increased in size by two points.  After printing the text, the font
  1338. X.\" will be returned to normal, otherwise the font will be left bold.
  1339. X.\"
  1340. X.\" section
  1341. X.de hu                    \" header, unnumbered
  1342. X.                    \" format: .hu [text]
  1343. X.if !\\n(it .bt                \" end the title and such
  1344. X.br                    \" force out previous line
  1345. X.b
  1346. X.ie \\n(hp .ps \\n(hp
  1347. X.el        .ps \\n(ps
  1348. X.ie \\n(hv .vs \\n(hv
  1349. X.el        .vs \\n(vs
  1350. X.in \\n(l\\n(lmu            \" stop any indenting
  1351. X.sn \\n(hsu                \" inter-section spacing
  1352. X.ne 3v+\\n(.Vu                \" slightly more than 3 lines
  1353. X.fi                    \" process the text, too
  1354. X.if \\n(.$>=1 \{\
  1355. X.ps +2
  1356. X\\$1
  1357. X.\}
  1358. X.if \\n(.$>=2 \\$2
  1359. X.if \\n(.$>=3 \\$3
  1360. X.if \\n(.$>=4 \\$4
  1361. X.if \\n(.$>=5 \\$5
  1362. X.if \\n(.$>=6 \\$6
  1363. X.if \\n(.$>=7 \\$7
  1364. X.if \\n(.$>=8 \\$8
  1365. X.if \\n(.$=9 \\$9
  1366. X.if \\n(.$>=1 \{\
  1367. X.ps -2
  1368. X.br
  1369. X.ft 1
  1370. X.\}
  1371. X..
  1372. X.de hn                    \" header, numbered
  1373. X.                    \" format: .hn [level] [text]
  1374. X.if !\\n(it .bt                \" end the title and such
  1375. X.br                    \" force out previous line
  1376. X.b
  1377. X.ie \\n(hp .ps \\n(hp
  1378. X.el        .ps \\n(ps
  1379. X.ie \\n(hv .vs \\n(hv
  1380. X.el        .vs \\n(vs
  1381. X.in \\n(l\\n(lmu            \" stop any indenting
  1382. X.sn \\n(hsu                \" inter-section spacing
  1383. X.ne 3v+\\n(.Vu                \" slightly more than 3 lines
  1384. X.fi                    \" process the text, too
  1385. X.ie !'\\$1'' .nr hn \\$1
  1386. X.el          .nr hn 1
  1387. X.ie \\n(hn>0 .nr hn -1
  1388. X.el          .nr hn 0
  1389. X.ie \\n(hn=0 \{\
  1390. X.    nr h0 +1            \" add 1 to main section header
  1391. X.    nr h1 0                \" zap remaining section numbers
  1392. X.    nr h2 0                \" zap remaining section numbers
  1393. X.    nr h3 0                \" zap remaining section numbers
  1394. X.ie \\n(.$>=2 \{\
  1395. X.ps +2
  1396. X\\n(h0.
  1397. X.ps -2
  1398. X.\}
  1399. X.el \\n(h0.
  1400. X.\}
  1401. X.el .ie \\n(hn=1 \{\
  1402. X.    nr h1 +1            \" add 1 to the section header
  1403. X.    nr h2 0                \" zap remaining section numbers
  1404. X.    nr h3 0                \" zap remaining section numbers
  1405. X.ie \\n(.$>=2 \{\
  1406. X.ps +2
  1407. X\\n(h0.\\n(h1.
  1408. X.ps -2
  1409. X.\}
  1410. X.el \\n(h0.\\n(h1.
  1411. X.\}
  1412. X.el .ie \\n(hn=2 \{\
  1413. X.    nr h2 +1            \" add 1 to the section header
  1414. X.    nr h3 0                \" zap remaining section numbers
  1415. X.ie \\n(.$>=2 \{\
  1416. X.ps +2
  1417. X\\n(h0.\\n(h1.\\n(h2.
  1418. X.ps -2
  1419. X.\}
  1420. X.el \\n(h0.\\n(h1.\\n(h2.
  1421. X.\}
  1422. X.el \{\
  1423. X.    nr h3 +1            \" add 1 to the section number
  1424. X.ie \\n(.$>=2 \{\
  1425. X.ps +2
  1426. X\\n(h0.\\n(h1.\\n(h2.\\n(h3.
  1427. X.ps -2
  1428. X.\}
  1429. X.el \\n(h0.\\n(h1.\\n(h2.\\n(h3.
  1430. X.\}
  1431. X.if \\n(.$>=2 \{\
  1432. X.ps +2
  1433. X\\$2
  1434. X.\}
  1435. X.if \\n(.$>=3 \\$3
  1436. X.if \\n(.$>=4 \\$4
  1437. X.if \\n(.$>=5 \\$5
  1438. X.if \\n(.$>=6 \\$6
  1439. X.if \\n(.$>=7 \\$7
  1440. X.if \\n(.$>=8 \\$8
  1441. X.if \\n(.$>=9 \\$9
  1442. X.if \\n(.$>=2 \{\
  1443. X.br
  1444. X.ft 1
  1445. X.ps -2
  1446. X.\}
  1447. X..
  1448. X.\" displays (no floats, thank God!)
  1449. X.de sd                    \" start display
  1450. X.                    \" look for nested displays -- ILLEGAL
  1451. X.ie \\n(id>0 .er "display within display"
  1452. X.el \{\
  1453. X.    ie '\\$1'c' .nr sf 1        \" center the sucker
  1454. X.    el          .nr sf 0        \" don't center it
  1455. X.\}
  1456. X.sn \\n(pdu                \" a little bit of space
  1457. X.ev 2                    \" switch to display environment
  1458. X.nf                    \" what you type is what you get
  1459. X.if \\n(id=0 .di dd            \" start saving text
  1460. X.rs                    \" don't eat leading space
  1461. X.nr id +1                \" increment level of display
  1462. X..
  1463. X.de ed                    \" end display
  1464. X.br                    \" flush line
  1465. X.ie \\n(id<=0 .er "end display has no corresponding begin display"
  1466. X.el \{\
  1467. X.    nr id -1            \" decrement level of display
  1468. X.    if \\n(id=0 \{\
  1469. X.        di            \" end diversion
  1470. X.        fi            \" resume filling
  1471. X.        in -\\n(piu        \" dedent
  1472. X.        ev            \" pop environment
  1473. X.        ne \\n(dnu        \" be sure you have room
  1474. X.        nf            \" don't reprocess display
  1475. X.        rs            \" don't eat leading space
  1476. X.        zi            \" save indents
  1477. X.        ie \\n(sf .in (\\n(llu-\\n(dlu)/2u    \" center on the line length
  1478. X.        el .in +\\n(piu        \" indent the sucker
  1479. X.        dd            \" drop display
  1480. X.        yi            \" restore indents
  1481. X.    \}
  1482. X.\}
  1483. X.fi                    \" resume filling
  1484. X.sn \\n(pdu                \" a little bit of space
  1485. X..
  1486. X.\" **********
  1487. X.\" fonts -- if argument(s), apply only to first
  1488. X.de b                    \" bold (font 3)
  1489. X.ie \\n(.$>0 \\&\\$3\\f3\\$1\\fP\\$2
  1490. X.el .ft 3
  1491. X..
  1492. X.de i                    \" italics (font 2)
  1493. X.ie \\n(.$>0 \\&\\$3\\f2\\$1\\fP\\$2
  1494. X.el .ft 2
  1495. X..
  1496. X.de r                    \" roman (font 1)
  1497. X.ft 1                    \" just restore it
  1498. X..
  1499. X.de bi                    \" bold italics (embolden font 2)
  1500. X\\&\\$3\c
  1501. X\\kb\\f2\\$1\\fP\\h'|\\nbu+2u'\\f2\\$1\\fP\\$2
  1502. X..
  1503. X.\" **********
  1504. X.\" point sizes -- if argument(s), apply only to first
  1505. X.de sm                    \" reduce point size by 2
  1506. X.ie \\n(.$>0 \\&\\$3\\s-2\\$1\\s0\\$2
  1507. X.el .ps -2
  1508. X..
  1509. X.de is                    \" increase point size by 2
  1510. X.ie \\n(.$>0 \\&\\$3\\s+2\\$1\\s0\\$2
  1511. X.el .ps +2
  1512. X..
  1513. X.de nl                    \" return to normal size
  1514. X.ps \\n(ps                \" just reset the point size
  1515. X..
  1516. X.\" **********
  1517. X.\" handy force space/inhibit more space macros
  1518. X.de sn                    \" space, then turn on nospace mode
  1519. X.sp \\$1                \" space
  1520. X.ns                    \" ignore any more space requests
  1521. X..
  1522. X.de sr                    \" force out space
  1523. X.rs                    \" turn on spacing mode
  1524. X.sp \\$1                \" space
  1525. X..
  1526. X.\" **********
  1527. X.\" end of text and error macros
  1528. X.de et                    \" end of text macro
  1529. X.                    \" this: (1) flushes rest of line
  1530. X.                    \" (2) trips the footer, taking
  1531. X.                    \" care of footnotes
  1532. X.sp \\n(.pu
  1533. X.                    \" check for open displays or footnotes
  1534. X.if \\n(id>0 .er "unfinished display"
  1535. X.if \\n(if>0 .er "unfinished footnote"
  1536. X.                    \" this one means an -mn bug (*sigh*)
  1537. X.if !'\\n(.z'' .er "diversion \\n(.z not closed"
  1538. X..
  1539. X.de er                    \" print error message
  1540. X.                    \" flag it as an error
  1541. X.ds ws "** ERROR **
  1542. X.                    \" if you have it, give the file name
  1543. X.if !'\\*(.f'' .as ws " file \\*(.f,
  1544. X.                    \" put out the line number
  1545. X.as ws " line \\n(.c
  1546. X.                    \" and finally the error message
  1547. X.tm \\*(ws: \\$1
  1548. X..
  1549. X.\" **********
  1550. X.\" macros in this section are VERY specific to the news documentation
  1551. X.de pa                    \" protocol appellation (darn names!)
  1552. X\\&\\$3\\f2\\$1\\fP\\$2
  1553. X..
  1554. X.de ng                    \" news group name
  1555. X\\&\\$3\\f3\\$1\\fP\\$2
  1556. X..
  1557. X.de cn                    \" computer name
  1558. X\\&\\$3\\f2\\$1\\fP\\$2
  1559. X..
  1560. X.de hf                    \" header field
  1561. X\\&\\$3\\*(lq\\$1\\*(rq\\$2
  1562. X..
  1563. X.de cf                    \" contents of field
  1564. X\\&\\$3\\*(lq\\$1\\*(rq\\$2
  1565. X..
  1566. X.de qc                    \" quote control char (command)
  1567. X\\&\\$3\\f3<\\s-2\\$1\\s0>\\fP\\$2
  1568. X..
  1569. X.de qp                    \" quote printing char (command)
  1570. X\\&\\$3\\f3\\$1\\fP\\$2
  1571. X..
  1572. X.de op                    \" option
  1573. X\\&\\$3\\f3\\$1\\fP\\$2
  1574. X..
  1575. X.\" **********
  1576. X.\" trademarked names
  1577. X.de pd                    \" print "PDP-11"
  1578. X.ie \\n(p1 \\&\\$2\\s-1PDP\\s0-11\\$1
  1579. X.el \{\
  1580. X.    nr p1 +1            \" mark footnote as dropped
  1581. X\\&\\$2\\s-1PDP\\s0-11\\*(rg\\$1
  1582. X.    fn                \" put out the footnote
  1583. X\\&\\*(rgPDP-11 is a registered trademark of Digital Equipment Corporation.
  1584. SHAR_EOF
  1585. echo "End of part 7"
  1586. echo "File doc/tmac.n is continued in part 8"
  1587. echo "8" > s2_seq_.tmp
  1588. exit 0
  1589.  
  1590.